﻿using System;
using DKE_Kinect.Entwicklung.Core;

namespace DKE_Kinect.Entwicklung.Kinect.GestureEvents
{
    /// <summary>
    /// Klasse für Argumente des Gestenevents
    /// </summary>
	public class GestureEventArgs : EventArgs
	{
		private Gestures gesture;
        private eModus mode;

        /// <summary>
        /// Konstruktor für die GestureEventArgs. Zulässig sind Gestenname und Modus.
        /// </summary>
        /// <param name="_gest">Gestenname aus dem Gestures-Enum</param>
        /// <param name="_mode">Modus aus dem eModus-Enum</param>
        public GestureEventArgs(Gestures _gest, eModus _mode)
        {
            gesture = _gest;
            mode = _mode;
        }

        /// <summary>
        /// Geste, die das Event ausgelöst hat.
        /// </summary>
        public Gestures Gesture
        {
            get { return gesture; }
            set { gesture = value; }
        }

        /// <summary>
        /// Modus, in dem das Event ausgelöst wurde.
        /// </summary>
        public eModus Mode
        {
            get { return mode; }
            set { mode = value; }
        }
    }


    /// <summary>
    /// Klasse, die Event für Gesten bereitstellt.
    /// </summary>
    public class GestureEvent
    {
        /// <summary>
        /// EventHandler für Gesten
        /// </summary>
        public event EventHandler<GestureEventArgs> GestureEventHandler;

        /// <summary>
        /// Event, das bei Gestenerkennung geworfen wird.
        /// </summary>
        /// <param name="g">GestureEventArgs (Geste, Modus)</param>
        protected virtual void OnGestureEvent(GestureEventArgs g)
        {
            EventHandler<GestureEventArgs> gestureEvent = GestureEventHandler;
            if (gestureEvent != null)
            {
                gestureEvent(this, g);
            }
        }

	}

}
